/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Control;

import Entidad.Reporte;
import java.util.ArrayList;
import java.util.Calendar;

/**
 *
 * @author Julian Cárdenas
 */
public class ES {
    ArrayList<Reporte> reportes = new ArrayList<>();
    
    public ES(){};
    
    public double forecast(ArrayList<Reporte> reportes){
        
        /*Nuevo arreglo de solo temperaturas (posteriormente convertidas a 
         * doubles
         */
        double datos[]= new double[reportes.size()];
        Calendar fecha = Calendar.getInstance();
        
        /*
         * un alfa que uno determina al azar entre 0 y 1, sientanse libres de 
         * cambiarlo
         */
        double a;
        a = 0.7;
        
        /*Acá se guardan solo las temperaturas de dicho arreglo
         */
        for(int i=0; i<reportes.size();i++){
            datos[i]=reportes.get(i).getTemperatura();
        }
        
        /*
         * Si solo hay un elemento (una temperatura) por definición, la 
         * predicción solo retornará dicho elemento
         */
        double f= datos[0];
        if(datos.length==1){
            System.out.println(datos[0]+" "+f);
            return f;
        }
        
        /*
         * Se aplica la fórmula para n>1 elementos del arreglo de datos
         */
        for(int i=0; i<datos.length; i++){
            f=(a*datos[i])+((1-a)*f);
            System.out.println("Current Date: "+(fecha.get(Calendar.DATE)+i)
                                          +"/"+fecha.get(Calendar.MONTH)
                                          +"/"+fecha.get(Calendar.YEAR)+" "+datos[i]+" "+f+"ºC");
        }
        return f;
       
    }
    
}
